package juego.enemigo;

import java.awt.Graphics;

import juego.control.Personaje;
import juego.enemigo.Goomba;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JLabel;

import juego.enemigo.Enemigo;
import juego.entidades.Entidad;
import juego.entidades.Vacio;
import juego.graficos.ElementoGrafico;
import juego.niveles.Nivel;



	public class HiloKoopa extends Thread {

		protected Entidad contenedora;
	    protected JLabel jlabel1;
		protected int xMine;
		protected int yMine;
	    protected int Limit1;
	    protected int Limit2;
		protected ElementoGrafico amover;
		protected Nivel l;
		protected boolean vivo;
		protected boolean flag=true;
		protected boolean terminoVuelta=true;
		protected Personaje mario;

	
	    public HiloKoopa (Personaje mario,Nivel level,JLabel j, int xM, int yM, Entidad ent){
	    	jlabel1=j;
	    	xMine=xM;
	    	yMine=yM;
	    	Limit1=yMine;
	    	Limit2=yMine+5;
	    	amover=ent.getGrafico();
	    	contenedora=ent;
	    	l=level;
	    	vivo=true;
	    	this.mario=mario;
	    	
	   
	    }
	    
		public void setearIcono(ElementoGrafico eg){
			amover=eg;
		}
		
		public void run ()
		{
			Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

			while (vivo)
			{
				 if (yMine <=Limit2 && terminoVuelta )
						
					{

					Vacio v=(Vacio) l.getEntidad(xMine, yMine);
					if (v.hayMalos()){
						Enemigo m= v.getMalo();
						m.atacarMario(mario, xMine+1, yMine+1);
						
		     			if (m.saltos()==0){
						
						
						l.setEntidad(xMine, yMine, v);
						Vacio v2=(Vacio)  l.getEntidad(xMine,yMine+1);
				        v2.addMalo(m);
						l.setEntidad(xMine, yMine+1, v2);
						amover.setLocation((yMine+1)*32,(xMine)*32);
						jlabel1.add(amover);
						yMine+= 1;
						}
		     			
		     			else if (m.saltos()==1){
		     				
		     				l.setEntidad(xMine, yMine, v);
							Vacio v2=(Vacio)  l.getEntidad(xMine,yMine+1);
					        v2.addMalo(m);
							l.setEntidad(xMine, yMine+1, v2);
							jlabel1.remove(amover);
							jlabel1.repaint();
							amover=(new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/malo/smalleyes.gif"))));
							amover.setLocation((yMine+1)*32,(xMine)*32);
							jlabel1.add(amover);
							jlabel1.repaint();
							yMine+= 1;

		     				
		     				
		     				
		     			}
		     			if (m.saltos()==2){
		     				
		     				flag=false;
		     				vivo=false;
		     				
		     				
		     			}
		     			
					}
					}
				 else if (yMine>=Limit1)
				{
					terminoVuelta=false;
					Vacio v=(Vacio) l.getEntidad(xMine, yMine);
					if (v.hayMalos()){
						
						Enemigo m= v.getMalo();
						m.atacarMario(mario, xMine+1, yMine-1);
						if (m.saltos()==0){
						l.setEntidad(xMine, yMine, v);
						Vacio v2=(Vacio)  l.getEntidad(xMine,yMine-1);
						v2.addMalo(m);
						l.setEntidad(xMine, yMine-1, v2);
						amover.setLocation( (yMine-1)*32,xMine*32);
						jlabel1.add(amover);
						yMine-=1;
						
						if (yMine==Limit1){terminoVuelta=true;}
					 }	 
						
						else if (m.saltos()==1){
							l.setEntidad(xMine, yMine, v);
							Vacio v2=(Vacio)  l.getEntidad(xMine,yMine-1);
							v2.addMalo(m);
							l.setEntidad(xMine, yMine-1, v2);
							jlabel1.remove(amover);
							jlabel1.repaint();
							amover=(new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/malo/smalleyes.gif"))));
							amover.setLocation( (yMine-1)*32,xMine*32);
							jlabel1.add(amover);
							yMine-=1;
							jlabel1.repaint();
					
							
							
						   if (yMine==Limit1){terminoVuelta=true;}	
						}
						
		                   if (m.saltos()==2){
		                	   vivo=false;
		                	   flag=false;
		     			
		     				
		     				
		     			}
		                 
				}
				}
				

			
			

				try
				{
					
					Thread.sleep (1000);
				}
				catch (InterruptedException ex)
				{
				
				}

			}
			if (!vivo && flag){
				amover.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/powerups/vacio/vacio_transparente.png")));
				amover.setLocation((yMine)*32,(xMine)*32);
				jlabel1.add(amover);
				jlabel1.repaint();
				
			}
			else if (!vivo && !flag){
			
					jlabel1.remove(amover);
					amover.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/powerups/vacio/vacio_transparente.png")));
					amover.setLocation((yMine)*32,(xMine)*32);
					jlabel1.add(amover);
					jlabel1.repaint();
					this.stop();
				
			}
		
		}

		
	public void morite(){
		vivo=false;	
		flag=false;
	}
		

	
		
		
		
	}

